home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / include / sys / inotify.h < prev    next >
C/C++ Source or Header  |  2009-10-07  |  4KB  |  106 lines

  1. /* Copyright (C) 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
  2.    This file is part of the GNU C Library.
  3.  
  4.    The GNU C Library is free software; you can redistribute it and/or
  5.    modify it under the terms of the GNU Lesser General Public
  6.    License as published by the Free Software Foundation; either
  7.    version 2.1 of the License, or (at your option) any later version.
  8.  
  9.    The GNU C Library is distributed in the hope that it will be useful,
  10.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  11.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  12.    Lesser General Public License for more details.
  13.  
  14.    You should have received a copy of the GNU Lesser General Public
  15.    License along with the GNU C Library; if not, write to the Free
  16.    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  17.    02111-1307 USA.  */
  18.  
  19. #ifndef    _SYS_INOTIFY_H
  20. #define    _SYS_INOTIFY_H    1
  21.  
  22. #include <stdint.h>
  23.  
  24.  
  25. /* Flags for the parameter of inotify_init1.  */
  26. enum
  27.   {
  28.     IN_CLOEXEC = 02000000,
  29. #define IN_CLOEXEC IN_CLOEXEC
  30.     IN_NONBLOCK = 04000
  31. #define IN_NONBLOCK IN_NONBLOCK
  32.   };
  33.  
  34.  
  35. /* Structure describing an inotify event.  */
  36. struct inotify_event
  37. {
  38.   int wd;        /* Watch descriptor.  */
  39.   uint32_t mask;    /* Watch mask.  */
  40.   uint32_t cookie;    /* Cookie to synchronize two events.  */
  41.   uint32_t len;        /* Length (including NULs) of name.  */
  42.   char name __flexarr;    /* Name.  */
  43. };
  44.  
  45.  
  46. /* Supported events suitable for MASK parameter of INOTIFY_ADD_WATCH.  */
  47. #define IN_ACCESS     0x00000001    /* File was accessed.  */
  48. #define IN_MODIFY     0x00000002    /* File was modified.  */
  49. #define IN_ATTRIB     0x00000004    /* Metadata changed.  */
  50. #define IN_CLOSE_WRITE     0x00000008    /* Writtable file was closed.  */
  51. #define IN_CLOSE_NOWRITE 0x00000010    /* Unwrittable file closed.  */
  52. #define IN_CLOSE     (IN_CLOSE_WRITE | IN_CLOSE_NOWRITE) /* Close.  */
  53. #define IN_OPEN         0x00000020    /* File was opened.  */
  54. #define IN_MOVED_FROM     0x00000040    /* File was moved from X.  */
  55. #define IN_MOVED_TO      0x00000080    /* File was moved to Y.  */
  56. #define IN_MOVE         (IN_MOVED_FROM | IN_MOVED_TO) /* Moves.  */
  57. #define IN_CREATE     0x00000100    /* Subfile was created.  */
  58. #define IN_DELETE     0x00000200    /* Subfile was deleted.  */
  59. #define IN_DELETE_SELF     0x00000400    /* Self was deleted.  */
  60. #define IN_MOVE_SELF     0x00000800    /* Self was moved.  */
  61.  
  62. /* Events sent by the kernel.  */
  63. #define IN_UNMOUNT     0x00002000    /* Backing fs was unmounted.  */
  64. #define IN_Q_OVERFLOW     0x00004000    /* Event queued overflowed.  */
  65. #define IN_IGNORED     0x00008000    /* File was ignored.  */
  66.  
  67. /* Helper events.  */
  68. #define IN_CLOSE     (IN_CLOSE_WRITE | IN_CLOSE_NOWRITE)    /* Close.  */
  69. #define IN_MOVE         (IN_MOVED_FROM | IN_MOVED_TO)        /* Moves.  */
  70.  
  71. /* Special flags.  */
  72. #define IN_ONLYDIR     0x01000000    /* Only watch the path if it is a
  73.                        directory.  */
  74. #define IN_DONT_FOLLOW     0x02000000    /* Do not follow a sym link.  */
  75. #define IN_MASK_ADD     0x20000000    /* Add to the mask of an already
  76.                        existing watch.  */
  77. #define IN_ISDIR     0x40000000    /* Event occurred against dir.  */
  78. #define IN_ONESHOT     0x80000000    /* Only send event once.  */
  79.  
  80. /* All events which a program can wait on.  */
  81. #define IN_ALL_EVENTS     (IN_ACCESS | IN_MODIFY | IN_ATTRIB | IN_CLOSE_WRITE  \
  82.               | IN_CLOSE_NOWRITE | IN_OPEN | IN_MOVED_FROM          \
  83.               | IN_MOVED_TO | IN_CREATE | IN_DELETE              \
  84.               | IN_DELETE_SELF | IN_MOVE_SELF)
  85.  
  86.  
  87. __BEGIN_DECLS
  88.  
  89. /* Create and initialize inotify instance.  */
  90. extern int inotify_init (void) __THROW;
  91.  
  92. /* Create and initialize inotify instance.  */
  93. extern int inotify_init1 (int __flags) __THROW;
  94.  
  95. /* Add watch of object NAME to inotify instance FD.  Notify about
  96.    events specified by MASK.  */
  97. extern int inotify_add_watch (int __fd, const char *__name, uint32_t __mask)
  98.   __THROW;
  99.  
  100. /* Remove the watch specified by WD from the inotify instance FD.  */
  101. extern int inotify_rm_watch (int __fd, int __wd) __THROW;
  102.  
  103. __END_DECLS
  104.  
  105. #endif /* sys/inotify.h */
  106.